#!/usr/bin/python
#coding:utf-8
'''
进程池模型
'''
from multiprocessing import Pool
import os, time, random

 

def long_time_task(name):
  print('Run task %s (%s)...' % (name, os.getpid()))
  start = time.time()
  time.sleep(random.random() * 3)
  end = time.time()
  print('Task %s runs %0.2f seconds.' % (name, (end - start)))

 

if __name__=='__main__':

  print('Parent process %s.' % os.getpid())

  p = Pool(4)
  for i in range(5):
    p.apply_async(long_time_task, args=(i,))

  print('Waiting for all subprocesses done...')
  p.close() #不添加新进程
  p.join()  #等待所有子进程执行完毕，join前必须close
  print('All subprocesses done.')